<?php

class MethodUtils {

    private static $arrayHora = array(
        '700' => '07:00',
        '730' => '07:30',
        '800' => '08:00',
        '830' => '08:30',
        '900' => '09:00',
        '930' => '09:30',
        '1000' => '10:00',
        '1030' => '10:30',
        '1100' => '11:00',
        '1130' => '11:30',
        '1200' => '12:00',
        '1230' => '12:30',
        '1300' => '13:00',
        '1330' => '13:30',
        '1400' => '14:00',
        '1430' => '14:30',
        '1500' => '15:00',
        '1530' => '15:30',
        '1600' => '16:00',
        '1630' => '16:30',
        '1700' => '17:00',
        '1730' => '17:30',
        '1800' => '18:00',
        '1830' => '18:30',
        '1900' => '19:00',
        '1930' => '19:30',
        '2000' => '20:00',
        '2030' => '20:30',
        '2100' => '21:00',
        '2130' => '21:30',
        '2200' => '22:00',
        '2230' => '22:30',
    );

    /**
     * 
     * @param type $type
     * TRUE para mensagem de sucesso e FALSE para mensagem de erro
     * @param type $msg
     * @param type $className 
     */
    public static function setMsgErro($type, $msg, $className) {
        $flash = ($type === TRUE ? 'flash-success' : 'flash-error') . '#' . $msg;
        Yii::app()->user->setFlash($className, $flash);
    }

    public static function setMsgAlert($msg, $className) {
        $flash = 'flash-notice' . '#' . $msg;
        Yii::app()->user->setFlash($className, $flash);
    }

    public static function createRandomPassword() {

        $chars = "abcdefghijkmnopqrstuvwxyz023456789";
        srand((double) microtime() * 1000000);
        $i = 0;
        $pass = '';

        while ($i <= 7) {
            $num = rand() % 33;
            $tmp = substr($chars, $num, 1);
            $pass = $pass . $tmp;
            $i++;
        }

        return $pass;
    }

    public static function enviarEmailAtivacao(Usuario $usuario) {
        $url = CHtml::link('clique aqui', Yii::app()->getController()->createAbsoluteUrl('site/ativacao', array('id' => $usuario->getEmailSemDominio($usuario->TX_EMAIL), 'key' => $usuario->TX_CODIGO_ATIVACAO)));
        $email = Yii::app()->email;
        $a = $usuario->TX_EMAIL;
        $email->to = $usuario->TX_EMAIL;
        $email->subject = 'AlocaInf - Código de Ativação';
        $email->message = MethodUtils::getMailMessageBodyActivation($url);
        $email->send();
    }

    /**
     * Você criou com sucesso sua conta no Remember The Milk. Nós enviamos uma mensagem para verificar seu endereço de e-mail
     * -- clique no link da mensagem para confirmar a verificação. Se você não encontrar o e-mail, tente verificar sua pasta de spam.
     *  Por que não efetuar login e dar uma olhada enquanto você espera pelo e-mail?
     */
    public static function getMailMessageBodyActivation($p_url) {
        $msg = '<p>Bem-vindo ao AlocaINF!</p>';
        $msg .= '<p>Você, ou alguém utilizando o seu endereço de e-mail, ';
        $msg .= 'completou um registro em nosso site. ';
        $msg .= '<br>Nós precisamos que você confirme o seu endereço de e-mail para ativar o seu registro. Para isso, ' . $p_url . '</p>';
        $msg .= '<p>Se você não efetuou nenhum cadastro em nosso site, por favor, ignore este e-mail.</p>';
        $msg .= '<p>Atenciosamente,';
        $msg .= '<br><font color="#888888">Equipe AlocaINF</font></p>';
        return $msg;
    }

    public static function enviarEmailNovaSenha($usuario, $senha) {
        $email = Yii::app()->email;
        $email->to = $usuario->TX_EMAIL;
        $email->subject = 'AlocaInf - Nova Senha';
        $email->message = MethodUtils::getMailMessageBodyNewPass($senha);
        $email->send();
    }

    public static function getMailMessageBodyNewPass($p_senha) {
        $msg = '<p>Caro Usuário!</p>';
        $msg .= '<p>Você, ou alguém utilizando o seu endereço de e-mail, ';
        $msg .= 'solicitou uma nova senha em nosso site. ';
        $msg .= '<br>Essa é a sua nova senha: ' . $p_senha . '</p>';
        $msg .= '<p>Equipe AlocaINF</p>';
        return $msg;
    }

    public static function getTimeFromInt($val) {
        $pad = str_pad($val, 4, '0', STR_PAD_LEFT);
        $h = substr($pad, 0, 2);
        $m = substr($pad, -2);
        return $h . ':' . $m;
    }

    public static function getTimeFromString($val) {
        $str = str_replace(':', '', $val);
        return intval($str);
    }

    public static function getDateInTableFormat($val) {
        $dateArray = explode('/', $val);
        return (strlen($dateArray[2]) == 2 ? '20' . $dateArray[2] : $dateArray[2]) . '-' . $dateArray[1] . '-' . $dateArray[0];
    }

    public static function getDateFromTableFormat($val) {
        $dateArray = explode('-', $val);
        return $dateArray[2] . '/' . $dateArray[1] . '/' . (strlen($dateArray[0]) == 2 ? '20' . $dateArray[0] : $dateArray[0]);
    }

    public static function normalizeDateFormat($val) {
        if (strpos($val, '/') > 0) {
            $dateArray = explode('/', $val);
            return $dateArray[0] . '/' . $dateArray[1] . '/' . (strlen($dateArray[2]) == 2 ? '20' . $dateArray[2] : $dateArray[2]);
        } else if (strpos($val, '-') > 0) {
            $dateArray = explode('-', $val);
            return $dateArray[0] . '-' . $dateArray[1] . '-' . (strlen($dateArray[2]) == 2 ? '20' . $dateArray[2] : $dateArray[2]);
        }
    }

    public static function getDtIniDtFim($data) {
        $date = DateTime::createFromFormat('d/m/Y', $data);
        $a = date('w', $date->getTimestamp());
        while ($a != 0) {
            $date->modify('-1 day');
            $a = date('w', $date->getTimestamp());
        }
        $dtIni = date('Y-m-d', $date->getTimestamp());
        $a = date('w', $date->getTimestamp());
        while ($a != 6) {
            $date->modify('+1 day');
            $a = date('w', $date->getTimestamp());
        }
        $dtFim = date('Y-m-d', $date->getTimestamp());
        return array($dtIni, $dtFim);
    }

    public static function getCheckListSemana() {
        $ret = array();
        $ret += array('0' => 'Domingo');
        $ret += array('1' => 'Segunda');
        $ret += array('2' => 'Terça');
        $ret += array('3' => 'Quarta');
        $ret += array('4' => 'Quinta');
        $ret += array('5' => 'Sexta');
        $ret += array('6' => 'Sabado');
        return $ret;
    }

    public static function getArrayDias($dias) {
        $arrayDias = explode('/', $dias);
        $charArray = '0000000';
        foreach ($arrayDias as $dia) {
            if ($dia == 'Dom') {
                $charArray[0] = '1';
            } else if ($dia == 'Seg') {
                $charArray[1] = '1';
            } else if ($dia == 'Ter') {
                $charArray[2] = '1';
            } else if ($dia == 'Qua') {
                $charArray[3] = '1';
            } else if ($dia == 'Qui') {
                $charArray[4] = '1';
            } else if ($dia == 'Sex') {
                $charArray[5] = '1';
            } else if ($dia == 'Sab') {
                $charArray[6] = '1';
            }
        }
        return $charArray;
    }

    public static function getDiasFromArrayDias($charArray) {
        $arrayDias = array();
        for ($index = 0; $index < strlen($charArray); $index++) {
            if ($charArray[$index] == '1') {
                if ($index == 0) {
                    $arrayDias = array_merge($arrayDias, array('Dom'));
                } else if ($index == 1) {
                    $arrayDias = array_merge($arrayDias, array('Seg'));
                } else if ($index == 2) {
                    $arrayDias = array_merge($arrayDias, array('Ter'));
                } else if ($index == 3) {
                    $arrayDias = array_merge($arrayDias, array('Qua'));
                } else if ($index == 4) {
                    $arrayDias = array_merge($arrayDias, array('Qui'));
                } else if ($index == 5) {
                    $arrayDias = array_merge($arrayDias, array('Sex'));
                } else if ($index == 6) {
                    $arrayDias = array_merge($arrayDias, array('Sab'));
                }
            }
        }
        $ret = '';
        foreach ($arrayDias as $value) {
            if ($ret == ''){
                $ret .= $value;
            }else{
                $ret .= '/'.$value;
            }
        }
        return $ret;
    }

    public static function getArrayHora() {
        return MethodUtils::$arrayHora;
    }

}

?>
